package test5;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: ws
 * Date: 2023-04-05
 * Time: 14:08
 */
import java.util.*;
//https://www.nowcoder.com/practice/a5190a7c3ec045ce9273beebdfe029ee?tpId=122&tqId=33661&ru=/exam/oj

public class Main1 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int[] arr = new int[n];
        for (int i = 0; i < n; i++) {
            arr[i] = scanner.nextInt();
        }
        Arrays.sort(arr);
        System.out.println(countNum(arr, n, 0, 0, 1));
    }

    /**
     * 通过依次放入球，然后统计幸运数
     * @param arr 数组
     * @param n 数组长
     * @param pos 数据开始下标
     * @param sum 连加
     * @param multi 连乘
     * @return
     */
    public static int countNum(int[] arr, int n, int pos , int sum, int multi) {
        int count = 0;
        for (int i = pos; i < n; i++) {
            sum += arr[i];
            multi *= arr[i];
            if (sum > multi) {//是幸运数，就继续向后加
                count += 1 + countNum(arr, n, i + 1, sum, multi);
            } else if (arr[i] == 1) {//只有第一个数为1并且n大于等于2，后面才可能有幸运数
                count += countNum(arr, n, i + 1, sum, multi);
            } else {//不是幸运数，跳出循环，回退到之前的循环
                break;
            }
            //此时的 sum , multi 是回退的非幸运数
            //sum + arr[i + 1] < multi * arr[i + 1],所以sum > multi 已经到头了
            //count 已经加上了该情况，所以减去arr[i]和/arr[i],回退，然后跳过该数，进行下一轮的循环
            sum -= arr[i];
            multi /= arr[i];
            //剔除相同的排列组合，避免重复的情况，多次相加
            //[1, ①2, ②2, 3]
            //1, ①2 和 1, ②2 是相同的，不跳过就会重复记录两次
            while (i < n - 1 && arr[i] == arr[i + 1]) {
                i++;
            }
        }
        return count;
    }
}

